<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8"/>
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"/>
        <title>AJ Framework-初始化一个项目</title>
        <meta name="description" content="AJ Framework 一个基于 SpringMVC 构建的轻量级框架，旨在增强 SpringMVC 并使其更具 SpringBoot 的特性。它拥有许多小型组件，非常易于使用。" />
        <meta name="keywords" content="AJ Framework, ajaxjs, ajaxjs framework, java framework, web framework" />
        <meta name="viewport" content="width=device-width, initial-scale=1"/>
        <link rel="preconnect" href="https://fonts.googleapis.com" />
        <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
        <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@200..900&family=Noto+Serif:ital,wght@0,100..900;1,100..900&display=swap&family=Noto+Sans+SC:wght@100..900&display=swap" />
        <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Noto+Sans+SC:wght@100..900&family=Noto+Serif:ital,wght@0,100..900;1,100..900&display=swap" /> 
        <link rel="stylesheet" href="https://framework.ajaxjs.com/static/new-ui/css/common.css" />
        <link rel="stylesheet" href="https://iam.ajaxjs.com/asset/main.css"/>
        <link rel="icon" type="image/x-icon" href="https://framework.ajaxjs.com/aj-logo/logo.ico"/>
        <script src="https://framework.ajaxjs.com/static/aj-docs/common.js"></script>
        <script>
            var _hmt = _hmt || [];
            (function() {
              var hm = document.createElement("script");
              hm.src = "https://hm.baidu.com/hm.js?a3dec1d9b9415edd86b54c1fb3d02f19";
              var s = document.getElementsByTagName("script")[0];
              s.parentNode.insertBefore(hm, s);
            })();
        </script>
    </head>
    <body>
        <nav>
            <div>
                <div class="links">
                    <a href="/">🏠 首页</a>
                    | ⚙️ 源码:
                    <a target="_blank" href="https://github.com/lightweight-component/aj-framework">Github</a>/<a target="_blank" href="https://gitcode.com/lightweight-component/aj-framework">Gitcode</a>
                    |
                    <a href="/common/contact">✉️ 联系</a>
                </div>
                <h1>
                    <img src="https://framework.ajaxjs.com/aj-logo/logo.png" style="vertical-align: middle;height: 45px;margin-bottom: 6px;" />
                    AJ Framework
                </h1>
                <h3>轻量级 Java 快速开发框架
                </h3>
            </div>
        </nav>
        <div>
            <menu>
                
                <ul>
                    <li class="selected">
                        <a href="/">首页</a>
                    </li>
                </ul>
                <h3>框架基本用法</h3>
                <ul>
                    <li>
                        <a href="/framework/init">初始化一个项目</a>
                    </li>
                    <li>
                        <a href="/framework/controller">简化控制器为接口</a>
                    </li>
                    <li>
                        <a href="/framework/unified-return">统一对象返回</a>
                    </li>
                    <li>
                        <a href="/framework/unified-ex">统一异常处理</a>
                    </li>
                    <li>
                        <a href="/framework/package">打包与部署</a>
                    </li>
                </ul>
                <h3>常用组件</h3>
                <ul>
                    <li>
                        <a href="/component/db">数据库访问</a>
                    </li>
                    <li>
                        <a href="/component/bean-validator/">Bean 实体校验</a>
                    </li>
                    <li>
                        <a href="/component/security">安全组件、用户系统</a>
                    </li>
                    <li>
                        <a href="/component/lite-c/">使用简单本地缓存</a>
                    </li>
                  <li>
                       <a href="/component/cache/">使用多级缓存</a>
                   </li>
                </ul>

                <h3>其他</h3>
                <ul>
                    <li><a href="/common/contact">联系</a></li>
                </ul>
            </menu>
            <article class="aj-text chinese">
                <h1>初始化一个项目</h1>
<h1>🔧 安装</h1>
<h2>系统要求</h2>
<ul>
<li>Java 8 及以上，Spring 5.1 及以上，MySQL 8 及以上</li>
<li>前端基于 Vue2/iView，要求支持 ECMAScript 6+ 的浏览器</li>
<li>轻量级设计，对系统要求低，单核/512MB RAM 即可运行服务</li>
</ul>
<hr>
<h2>下载与源码</h2>
<p>包括依赖包在内的 JAR 包约 300 多 KB。</p>
<h3>Maven 依赖</h3>
<p><a href="https://search.maven.org/artifact/com.ajaxjs/ajaxjs-framework"><img src="https://img.shields.io/maven-central/v/com.ajaxjs/ajaxjs-framework?label=Latest%20Release" alt="最新版本"></a></p>
<pre><code class="language-xml">&lt;!-- AJ 框架 --&gt;
&lt;dependency&gt;
    &lt;groupId&gt;com.ajaxjs&lt;/groupId&gt;
    &lt;artifactId&gt;ajaxjs-framework&lt;/artifactId&gt;
    &lt;version&gt;1.2.3&lt;/version&gt;
&lt;/dependency&gt;
</code></pre>
<h3>源码信息</h3>
<p>源码采用 Apache License Version 2.0，可自由使用和修改。</p>
<ul>
<li><a href="https://github.com/sp42/ajaxjs">GitHub 仓库</a></li>
<li><a href="https://gitee.com/sp42_admin/ajaxjs">Gitee 镜像</a></li>
</ul>
<h2>依赖与项目结构</h2>
<p>你可以直接依赖 AJ 的 Maven（参见<a href="install.html">《安装》</a>），不过更推荐通过父 <code>pom.xml</code> 依赖方式整合，包含 MySQL 驱动、Tomcat、Spring 等的依赖。<br>
如下是一个 <code>pom.xml</code> 的例子，使用了 <code>aj-common-parent</code> 的 <code>1.7</code> 版本。整个工程的结构跟普通的 Spring Boot 一样，都是 <code>main()</code> 函数启动。你需要在节点 <code>project.mainClass</code> 指定项目主类运行入口，也就是 <code>main()</code> 函数所在的类。</p>
<h2>aj-common-parent 当前最新版本</h2>
<p><a href="https://search.maven.org/artifact/com.ajaxjs/aj-common-parent"><img src="https://img.shields.io/maven-central/v/com.ajaxjs/aj-common-parent?label=Latest%20Release" alt="最新版本"></a></p>
<h3>示例 pom.xml</h3>
<pre><code class="language-xml">&lt;project xmlns=&quot;http://maven.apache.org/POM/4.0.0&quot;
    xmlns:xsi=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;
    xsi:schemaLocation=&quot;http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd&quot;&gt;
    &lt;modelVersion&gt;4.0.0&lt;/modelVersion&gt;
    &lt;parent&gt;
        &lt;groupId&gt;com.ajaxjs&lt;/groupId&gt;
        &lt;artifactId&gt;aj-common-parent&lt;/artifactId&gt;
        &lt;version&gt;1.7&lt;/version&gt;
        &lt;relativePath/&gt;
    &lt;/parent&gt;
    &lt;artifactId&gt;aj-iam-server&lt;/artifactId&gt;
    &lt;version&gt;1.0&lt;/version&gt;
    &lt;description&gt;AJ-IAM Server&lt;/description&gt;
    &lt;packaging&gt;jar&lt;/packaging&gt;

    &lt;properties&gt;
        &lt;!-- 这里是项目主类运行入口 --&gt;
        &lt;project.mainClass&gt;com.ajaxjs.iam.server.IamServerApp&lt;/project.mainClass&gt;
    &lt;/properties&gt;

    &lt;dependencies&gt;
        &lt;!-- 加入你项目的依赖 --&gt;
        &lt;dependency&gt;
            &lt;groupId&gt;org.springframework.data&lt;/groupId&gt;
            &lt;artifactId&gt;spring-data-redis&lt;/artifactId&gt;
            &lt;version&gt;2.6.10&lt;/version&gt;
        &lt;/dependency&gt;
    &lt;/dependencies&gt;
&lt;/project&gt;
</code></pre>
<h1>配置</h1>
<p>在资源目录中安排 <code>application.yml</code> 文件，内容如下：</p>
<pre><code class="language-yaml">server:
    port: 8888 # 端口号
    context-path: /iam  # 项目名，如果不设定，默认是 /
    localFileUpload: false # 是否支持本地文件上传
</code></pre>
<p>代码结构按照惯常开发的模式即可。必须要有启动类和相关的配置类。</p>
<p><img src="/imgs/api/3.jpg" alt="项目结构图"></p>
<p><code>main()</code> 函数内的 <code>start()</code> 必须传入配置类参数；指定 <code>@ComponentScan</code> 扫描包的范围。</p>
<h3>启动类示例</h3>
<pre><code class="language-java">import com.ajaxjs.embeded_tomcat.EmbeddedTomcatStarter;
import com.ajaxjs.framework.BaseWebMvcConfigure;
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;

@Configuration
@EnableWebMvc
@ComponentScan({&quot;com.foo&quot;})
public class FooApplication extends BaseWebMvcConfigure {
    public static void main(String[] args) {
        EmbeddedTomcatStarter.start(FooApplication.class); // FooApplication 本身为配置类
    }
}
</code></pre>
<h3>BaseApplication 配置类示例</h3>
<pre><code class="language-java">import com.ajaxjs.data.jdbc_helper.JdbcConn;
import com.ajaxjs.data.jdbc_helper.JdbcWriter;
import com.ajaxjs.iam.resource_server.UserInterceptor;
import com.ajaxjs.util.logger.LogHelper;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.beans.factory.config.ConfigurableBeanFactory;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Scope;
import org.springframework.util.StringUtils;
import org.springframework.web.servlet.config.annotation.CorsRegistry;
import org.springframework.web.servlet.config.annotation.InterceptorRegistration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurer;

import javax.sql.DataSource;

/**
 * 程序配置
 */
@Configuration
public class FooConfig implements WebMvcConfigurer {
    @Value(&quot;${db.url}&quot;)
    private String url;

    @Value(&quot;${db.user}&quot;)
    private String user;

    @Value(&quot;${db.psw}&quot;)
    private String psw;

    @Bean(value = &quot;dataSource&quot;, destroyMethod = &quot;close&quot;)
    DataSource getDs() {
        return JdbcConn.setupJdbcPool(&quot;com.mysql.cj.jdbc.Driver&quot;, url, user, psw);
    }
}
</code></pre>
<h2>非配置文件启动</h2>
<p>如果你不采用 <code>application.yml</code> 配置文件，那么使用 Java 配置亦可。</p>
<pre><code class="language-java">public static void main(String[] args) {
    TomcatConfig cfg = new TomcatConfig();
    cfg.setEnableJsp(true);
    cfg.setPort(8080);
    cfg.setContextPath(&quot;/bar&quot;);

    new EmbeddedTomcatStarter(cfg, new Class[]{FooApplication.class}).start();
}
</code></pre>
<h1>Profiles</h1>
<p>在实际使用环境中，我们同一个应用可能需要在不同环境运行（开发、测试、生产等），每个环境的参数都有可能不同（连接参数、日志级别等），使用 profiles 可以将不同环境下的参数进行拆分，并指定加载。</p>
<h2>IDEA 配置方式</h2>
<p>在 <code>src</code> 目录下创建 <code>profiles</code> 目录，安排如下图的配置文件。</p>
<p><img src="../imgs/api/1.png" alt="Profiles 配置目录结构"></p>
<p>要选择哪个 profile，在 IDEA 里面选 Maven Profile 打勾即可。</p>
<p><img src="../imgs/api/2.png" alt="IDEA Maven Profile 设置"></p>

            </article>
        </div>
        <footer>
             开源框架 <a href="https://framework.ajaxjs.com" target="_blank">AJ-Framework</a> 首页。联系方式：
             frank@ajaxjs.com，<a href="https://blog.csdn.net/zhangxin09" target="_blank">作者博客</a>
             <br />
             <br />
             Copyright © 2025 Frank Cheung. All rights reserved.
         </footer>
    </body>
</html>